package com.itc.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.itc.common.core.domain.R;
import com.itc.system.api.domain.SysMenu;
import com.itc.system.api.domain.SysUser;
import com.itc.system.domain.vo.RouterVo;
import com.itc.system.domain.vo.TreeSelect;

import java.util.List;

/**
* @author wangjinxia
* @description 针对表【sys_menu(菜单权限表)】的数据库操作Service
* @createDate 2024-05-11 15:49:43
*/
public interface SysMenuService extends IService<SysMenu> {
    /**
     * 添加权限菜单
     * @param sysMenu
     * @return
     */
    public R addMenu(SysMenu sysMenu );
    /**
     * 根据id删除权限菜单
     * @param menuId
     * @return
     */
    public boolean removeMenu(Long menuId);

    /**
     * 修改权限菜单
     * @param sysMenu
     * @return
     */
    public R updateMenu(SysMenu sysMenu);

    /**
     * 根据用户查询系统菜单列表
     *
     * @param menu 菜单信息
     * @param userId 部门ID
     * @return 菜单列表
     */
    public List<SysMenu> selectMenuList(SysMenu menu, Long userId);

    /**
     * 构建前端所需要树结构
     *
     * @param menus 菜单列表
     * @return 树结构列表
     */
    public List<SysMenu> buildMenuTree(List<SysMenu> menus);

    /**
     * 前端查询所有的树形数据
     * @param menus
     * @return
     */
    List<SysMenu> buildMenuAllTree(List<SysMenu> menus);

    /**
     * 根据用户ID查询菜单树信息
     *
     * @param userId 用户ID
     * @return 菜单列表
     */
    public List<SysMenu> selectMenuTreeByUserId(Long userId);

    List<RouterVo> buildMenus(List<SysMenu> menus);
}
